<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        body {
            background-color: #e1e1e1;

        }

        ul {
            background-color: #fff;

            width: 1000px;
            margin: auto;
        }

        li {
            height: 60px;
            display: flex;
            align-items: center;
            border-bottom: 1px solid #dedede;
            position: relative;
        }

        li:hover {
            background-color: #f6f6f6;
        }

        li img {
            width: 35px;
            height: 35px;
            display: block;
            margin: 0 10px;
            cursor: pointer;
        }

        li p {
            color: #333;
        }

        li p>span:first-child {
            color: #9e78c0;
            font-size: 14px;
        }

        li p>span:last-child {
            font-size: 10px;
            color: #b4b4b4;
        }

        li>span {
            display: block;
            width: 40px;
            height: 20px;
            line-height: 20px;
            text-align: center;
            border-radius: 5px;
            font-size: 12px;
            margin: 0 10px;
            background-color: #e5e5e5;
            color: #999;
        }

        li>span.top {
            background: #80bd01;
            color: #fff;
            font-size: 12px;
        }

        h3 {
            font-weight: 400px;
        }

        h3>a {
            color: #333;
            font-size: 16px;
            text-decoration: none;
        }

        h3>a:hover {
            text-decoration: underline;
        }

        time {
            cursor: pointer;
            color: #778087;
            font-size: 11px;
            position: absolute;
            right: 10px;
            top: 20px
        }

        .nav {
            padding: 10px;
            background-color: #f6f6f6;
            border-radius: 3px 3px 0 0;
            line-height: 20px;
            width: 980px;
            height: 20px;
            margin: auto;
        }

        .nav a {

            color: #80bd01;
            padding: 3px 4px;
            border-radius: 3px;
            margin: 0 10px;
            font-size: 14px;
            text-decoration: none;
            transition: 0.02s linear;

        }

        .nav a:hover {
            color: #08c;
        }

        .nav .jk {
            background: #80bd01;
            color: #fff;
        }

        ol {
            display: flex;
            margin-bottom: 100px;
            height: 40px;
            margin: 10px 0 0 10px;
            width: 1000px;
            background-color: #fff;
            border-radius: 0 0 5px 5px;
            margin: auto;
            padding: 0;
    
        }

        ol>li {
            width: 8px;
            height: 30px;
            text-align: center;
            float: left;
            padding: 4px 12px;
            line-height: 20px;
            text-decoration: none;
            background-color: #fff;
            border: 1px solid #ddd;
            border-left-width: 0;
           
        }
        ol>li:hover {
             color: #80bd01;
        }
       
    </style>
</head>

<body>
    <div class="nav">
        <a href="" class="jk">全部</a>
        <a href="">精华</a>
        <a href="">分享</a>
        <a href="">问答</a>
        <a href="">招聘</a>
    </div>

    <ul class="list">
        <!--  <li>
            <img src="" alt="">
            <p><span></span>/<span></span></p>
            <span></span>
            <h3><a href=""></a></h3>
        </li> -->
    </ul>
    <ol>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ol>
    <!-- 
    渲染 ：将数据渲染在页面上  将发送请求获取的数据渲染在页面上
    1.先写静态页面（自己先随意手写数据）
    2.获取数据
    3.根据数据重新创建标签 添加在页面上
     -->
    <script>

        
var tab = "all"; //记录当前显示的分类
        var page = 1; //记录当前显示页码
        listAjax();

       
        var tabs = ["all", "good", "share", "ask", "job"];
        var aall = document.querySelectorAll(".nav > a");

        for (let i = 0; i < aall.length; i++) {
            aall[i].onclick = function (e) {
                e.preventDefault()
                tab = tabs[i];
                page = 1;
                listAjax();
                for (let j = 0; j < aall.length; j++) {
                    // aall[j].style.background = "";
                    // aall[j].style.color = "";
                    aall[j].classList.remove("jk")

                }
                // aall[i].style.background = " #80bd01";
                // aall[i].style.color = " #fff";
                aall[i].classList.add("jk")
            }

        }
        var pages = document.querySelectorAll("ol > li");
        for (let i = 0; i < aall.length; i++) {
            pages[i].onclick = function () {
                // var urla = `https://cnodejs.org/api/v1/topics?tab=${tab}&page=${this.innerHTML}`;
                // listAjax(urla);
                page = this.innerHTML;
                listAjax()
            }
        }
        //  函数封装的时候目的是为了多次调用
        // 那么在不同调用的时候 函数内的代码执行不一定完全一样 
        // 那不一样的那一个或多个值 需要设置称为参数
        // 每次调用时传递值
        function listAjax() {
            // 1.分析数据在什么情况下获取
            // （页面加载完成后直接获取数据）
            var hml = new XMLHttpRequest();
            hml.onreadystatechange = function () {
                //  hml.responseText属性用来获取请求的响应数据，
                // console.log(hml.responseText);
                //一定要在状态值等于4表示请求结束了之后在获取responseText的值
                if (hml.readyState === 4) {
                    // console.log(hml.responseText); //得到的json字符串
                    // 将json字符串转换成json对象后 获取这个对象内的data属性的值
                    var res = JSON.parse(hml.responseText).data;
                    var str = "";
                    console.log(res[0]);
                    //根据数据的数组创建标签 数组的长度就是创建标签的数量
                    for (let i = 0; i < res.length; i++) {
                        // 每次循环都创建一个列表 讲本次循环获取的res数组中的对象的数据拼接在这个列表标签中
                        // 讲字符串模板的拼接分为3部分
                        str += `<li>
                        <img src="${res[i].author.avatar_url}" alt="">
                        <p><span>${res[i].reply_count}</span> / <span>${res[i].visit_count}</span></p>
                    `;
                        // 中间部分的内容需要进行数据判断处理
                        if (res[i].top) {
                            str += `<span class="top">置顶</span>`;
                        } else if (res[i].good) {
                            str += `<span class="top">精华</span>`;
                        } else if (res[i].tab == "share") {
                            str += `<span>分享</span>`;
                        } else {
                            str += `<span>问答</span>`;
                        }

                        str += `<h3><a href="">${res[i].title}</a></h3>
                    <time>${time(res[i].last_reply_at)}</time>
                    </li>`
                    }
                    var ul = document.querySelector("ul");
                    ul.innerHTML = str;

                }
            }

            hml.open("get",`https://cnodejs.org/api/v1/topics?tab=${tab}&page=${page}`);
            hml.send();
        }



        function time(lastTime) {
            // 得到的时间
            var time1 = new Date().getTime(); //获取当前时间的时间戳
            var time2 = new Date(lastTime).getTime(); //获取参数传递的时间的时间戳
            var cha = time1 - time2; //得到时间戳的差
            var y = parseInt(cha / 1000 / 60 / 60 / 24 / 30 / 12);
            var m = parseInt(cha / 1000 / 60 / 60 / 24 / 30 % 12);
            var d = parseInt(cha / 1000 / 60 / 60 / 24 % 30);
            var h = parseInt(cha / 1000 / 60 / 60 % 24);
            var mi = parseInt(cha / 1000 / 60 % 60);
            if (y) {
                return y + "年前"
            } else if (m) {
                return m + "月前"
            } else if (d) {
                return d + "天前"
            } else if (h) {
                return h + "小时前"
            } else if (mi) {
                return mi + "分钟前"
            } else {
                return "刚刚";
            }

        }

    </script>
</body>

</html>